package com.gewu.pm.ui.activity.order;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.gewu.pm.R;
import com.gewu.pm.aop.SingleClick;
import com.gewu.pm.app.AppActivity;
import com.gewu.pm.other.IntentKey;

/**
 * 支付订单页面
 */
public final class PayOrderActivity extends AppActivity {

    // 倒计时总时长：30分钟（毫秒）
    private static final long COUNTDOWN_MILLIS = 30 * 60 * 1000;
    // 倒计时间隔：1秒
    private static final long COUNTDOWN_INTERVAL = 1000;

    // 支付方式
    private static final int PAY_TYPE_WECHAT = 1;  // 微信支付
    private static final int PAY_TYPE_ALIPAY = 2;  // 支付宝支付

    // 界面组件
    private TextView tvAmount;           // 支付金额
    private TextView tvCountdown;        // 倒计时
    private LinearLayout llWechat;       // 微信支付布局
    private LinearLayout llAlipay;       // 支付宝支付布局
    private CheckBox cbWechat;           // 微信支付checkbox
    private CheckBox cbAlipay;           // 支付宝支付checkbox
    private TextView btnPay;             // 支付按钮

    // 数据
    private String orderAmount;          // 订单金额
    private int selectedPayType = 0;     // 选中的支付方式（0=未选择）
    private CountDownTimer countDownTimer;  // 倒计时器

    /**
     * 启动方法
     */
    public static void start(Context context, String amount) {
        Intent intent = new Intent(context, PayOrderActivity.class);
        intent.putExtra(IntentKey.BALANCE, amount);
        context.startActivity(intent);
    }

    @Override
    protected int getLayoutId() {
        return R.layout.pay_order_activity;
    }

    @Override
    protected void initView(Bundle savedInstanceState) {
        // 初始化控件
        tvAmount = findViewById(R.id.tv_amount);
        tvCountdown = findViewById(R.id.tv_countdown);
        llWechat = findViewById(R.id.ll_wechat);
        llAlipay = findViewById(R.id.ll_alipay);
        cbWechat = findViewById(R.id.cb_wechat);
        cbAlipay = findViewById(R.id.cb_alipay);
        btnPay = findViewById(R.id.btn_pay);

        // 设置点击事件
        setOnClickListener(llWechat, llAlipay, btnPay);

        // 设置checkbox监听
        cbWechat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    // 微信被选中，取消支付宝选择
                    cbAlipay.setChecked(false);
                    selectedPayType = PAY_TYPE_WECHAT;
                }
                // 不允许取消选中（至少要有一个被选中）
            }
        });

        cbAlipay.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    // 支付宝被选中，取消微信选择
                    cbWechat.setChecked(false);
                    selectedPayType = PAY_TYPE_ALIPAY;
                }
                // 不允许取消选中（至少要有一个被选中）
            }
        });
    }

    @Override
    protected void initData() {
        // 获取订单金额
        orderAmount = getString(IntentKey.BALANCE);
        if (orderAmount == null || orderAmount.isEmpty()) {
            orderAmount = "¥4468.80";  // 默认金额
        }

        // 显示金额
        tvAmount.setText(orderAmount);

        // 默认选择微信支付
        cbWechat.setChecked(true);
        selectedPayType = PAY_TYPE_WECHAT;

        // 启动倒计时
        startCountDown();
    }

    /**
     * 启动倒计时
     */
    private void startCountDown() {
        countDownTimer = new CountDownTimer(COUNTDOWN_MILLIS, COUNTDOWN_INTERVAL) {
            @Override
            public void onTick(long millisUntilFinished) {
                // 每秒更新一次
                updateCountdownText(millisUntilFinished);
            }

            @Override
            public void onFinish() {
                // 倒计时结束
                tvCountdown.setText("00:00:00");
                toast("支付超时，订单已取消");
                // 可以在这里关闭页面或跳转
                postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        finish();
                    }
                }, 1500);
            }
        };
        countDownTimer.start();
    }

    /**
     * 更新倒计时文本
     */
    private void updateCountdownText(long millisUntilFinished) {
        long totalSeconds = millisUntilFinished / 1000;
        long hours = totalSeconds / 3600;
        long minutes = (totalSeconds % 3600) / 60;
        long seconds = totalSeconds % 60;

        String timeText = String.format("%02d:%02d:%02d", hours, minutes, seconds);
        tvCountdown.setText(timeText);
    }

    @SingleClick
    @Override
    public void onClick(View view) {
        super.onClick(view);
        if (view == btnPay) {
            // 点击支付按钮
            handlePayClick();
        } else if (view == llWechat) {
            // 点击微信支付区域，如果未选中则选中
            if (!cbWechat.isChecked()) {
                cbWechat.setChecked(true);
            }
        } else if (view == llAlipay) {
            // 点击支付宝支付区域，如果未选中则选中
            if (!cbAlipay.isChecked()) {
                cbAlipay.setChecked(true);
            }
        }
    }

    /**
     * 处理支付按钮点击
     */
    private void handlePayClick() {
        if (selectedPayType == 0) {
            toast("请选择支付方式");
            return;
        }

        String payTypeName = "";
        switch (selectedPayType) {
            case PAY_TYPE_WECHAT:
                payTypeName = "微信支付";
                break;
            case PAY_TYPE_ALIPAY:
                payTypeName = "支付宝支付";
                break;
        }

        toast("选择了" + payTypeName);

        // TODO: 这里可以调用实际的支付接口
        // 例如：callWechatPay() 或 callAlipayPay()
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 取消倒计时，防止内存泄漏
        if (countDownTimer != null) {
            countDownTimer.cancel();
            countDownTimer = null;
        }
    }
}

